#ifndef __ISERVICE_LOCATOR_H__
#define __ISERVICE_LOCATOR_H__

#include "ifaces_core.h"


namespace Boss
{

  struct IServiceLocator
    : public IBase
  {
    BOSS_DECLARE_IFACE_UUID(1e57d03d-673a-4f5f-8729-3914675aacd3)

    virtual TResult BOSS_CALL_TYPE GetService(TGuid serviceId, IBase **service) const = 0;

    virtual TResult BOSS_CALL_TYPE AddService(TGuid serviceId, IBase *service) = 0;
    virtual TResult BOSS_CALL_TYPE DelService(TGuid serviceId) = 0;
  };

}

#endif  // !__ISERVICE_LOCATOR_H__
